package models;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import play.data.validation.MaxSize;
import utils.DateHelper;

import com.google.gson.annotations.Expose;

import controllers.CRUD.Hidden;

@Entity
public class SubBase extends ExposedModel{

	@Expose
	public String nombre;

	public String numeroEdicion;
	
	@ManyToOne
	public TipoSubBase tipoSubbase;

	public Date fechaFinal;
	
	@MaxSize(1000)
	public String descripcion;
	
	@ManyToMany
	public List<Organizacion> organizaciones;
	
	@Hidden
	@OneToOne
	public ArcadiaLog lastLogs;

	@javax.persistence.Transient	
	public List<CampoSubbase> campos;

	
	public void addOrganizacion(Organizacion organizacion) {
		if (organizaciones==null)
			organizaciones = new ArrayList<Organizacion>();
		
		organizaciones.add(organizacion);
	}
	
	public String getActualizado(){
		if (lastLogs!=null)
			return DateHelper.getFechaHora(lastLogs.fecha).concat(" - ").concat(lastLogs.user.username);
		else 
			return "";
	}
	
	@Override
	public String toString() {
		return nombre;
	}
	
	public boolean contains(Organizacion organizacionNew){
		for (Organizacion organizacion: organizaciones){
			if (organizacion.id.equals(organizacionNew.id))
				return true;
		}
		return false;
	}
	
	public void addCampo(CampoSubbase campo){
		if (campos==null)
			campos = new ArrayList<CampoSubbase>();
		campos.add(campo);
	}
}



